Skip to content

REC-206: Implementa renovación de recetas#2197

Open
ma7payne wants to merge 1 commit intomasterfrom
REC-206
Open

REC-206: Implementa renovación de recetas#2197
ma7payne wants to merge 1 commit intomasterfrom
REC-206

Conversation

@ma7payne
Copy link
Contributor

@ma7payne ma7payne commented Mar 9, 2026

Requerimiento

https://proyectos.andes.gob.ar/browse/REC-206

Funcionalidad desarrollada

  1. Se implementó el endpoint POST /api/modules/recetas/renovar en el módulo de recetas.
  2. Se agregó la función renovarRecetas que valida que los IDs existan en BD, que no sean tratamientos prolongados y que tengan antigüedad menor a 12 meses.
  3. Se sobrescribe el documento original de la receta para conservar su ID y su historial de estados
  4. Por cada receta renovada se mantiene el medicamento, paciente y diagnóstico, sobreescribiendo el profesional y la organización y seteando el estado a vigente y estadoDispensa a sin-dispensa con fechas actuales.
  5. Si es un tratamiento prolongado, el sistema busca automáticamente todos los meses asociados (por el idRegistro) y los renueva en masa, sin importar desde cuál mes se disparó la acción. El primer mes (orden 0) arranca como vigente, y los meses a futuro arrancan como pendiente, todos con despensa en estado sin-dispensa. Primero se validan en un ciclo todas las recetas involucradas para asegurar que cumplamos los requisitos (sin meses pendientes viejos, no estar suspendida, etc.) y recién si todas pasan, se aplican los cambios a la base de datos en un segundo ciclo.
Paso Acción Realizada por el Sistema Detalle Relevante de la Lógica Modificada
1. Búsqueda y Validación Inicial Encuentra las recetas según los IDs proporcionados por el usuario. Si no encuentra coincidencia en la BD lanza error RecetaNotFound.
2. Expansión de Tratamientos Prolongados Detecta si las recetas son prolongadas y agrupa automáticamente todos los meses restantes enviando una segunda consulta a la BD. Garantiza que se renueven en lote todos los meses asociados de una tirada tomando el mismo idRegistro.
3. Obtención del Profesional Recupera los últimos datos del legajo del profesional solicitante para actualizar su participación en la renovación. Actualiza nombre, documento, especialidad y matrícula en la firma de la extensión de receta.
4. Pre-Validaciones Obligatorias (Receta x Receta) Pasa cada receta expandida por controles que validen si es apta legal y sanitariamente. Reglas de bloqueo superadas: la receta debe estar vencida/finalizada, nunca fue suspendida, su grupo no tiene recetas pendientes, o no se pasó de un 1 año de antigüedad.
5. Mutación In-Place de Datos Aplica las limpiezas de arreglos e historia transaccional sobre el mismo documento base en lugar de duplicarlo. Pone en 0 arreglos dispensa, limpia referencias origenExterno y borra interacciones en appNotificada para forzar a las farmacias a consultar de nuevo.
6. Escalado de Renovación e Historial de Estados Recalcula el ID cíclico de reenganche (numeroRenovacion) en base a los números del tratamiento y le inyecta un estado inicial. Pone estado en vigente al orden del mes 0, y pendiente a órdenes >0 para activarse en el futuro. Agrega una traza temporal de estado sin-dispensa.
7. Persistencia final Ejecuta el commit contra la base de datos save() confirmando oficialmente el cambio de las entidades. Se efectúa sólo si no saltaron errores de validación durante las lecturas agrupadas.

UserStories llegó a completarse

  • Si
  • No

Requiere actualizaciones en la base de datos

  • Si
  • No

@ma7payne ma7payne requested review from a team as code owners March 9, 2026 18:36
@ma7payne ma7payne requested review from AgosLizzi and MCele March 9, 2026 18:36
@ma7payne ma7payne closed this Mar 10, 2026
@ma7payne ma7payne reopened this Mar 10, 2026
@ma7payne ma7payne force-pushed the REC-206 branch 2 times, most recently from b7b1b3f to 6213d56 Compare March 11, 2026 14:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant